The invention is related to Internet Protocol (IP) telephony systems. More specifically, the invention is related to systems and methods for helping to ensure that an IP telephony system is always able to rapidly contact a user's telephony device for purposes of setting up new incoming communications that are directed to the user's telephony device.
Many computing devices obtain access to a data network, such as the Internet, via a data network interface device. The data network interface device could be a wired router, or a wireless router, such as a device offering WiFi service. The data network interface device can provide network address translation services, and may also operate in such a way as to prevent undesired or unauthorized data packets from being communicated from the data network to the computing device.
One way that a data network interface prevents unauthorized or undesired data packets from being communicated to a computing device is through a pinhole timer. In a typical pinhole timer scheme, each time that the computing device sends a communication to a server or computer at an Internet Protocol (IP) address, the data network interface device starts a pinhole timer associated with that IP address, and the port of the data network interface device being used by the computing device. The pinhole timer will run for a predetermined period of time, which may be configurable by the user. While the pinhole timer is running, the data network interface device will allow data packets coming from the IP address to be delivered back to the computing device. The assumption is that the original communication from the computing device to the server at the IP address requested information or data from that server. Thus, the data network interface device allows data packets coming from that server to be delivered to the computing device.
However, once the pinhole timer expires, the data network interface device blocks any further data packets from the IP address from being delivered to the computing device. Each time that the computing device sends a new communication to the same IP address, the pinhole timer relating to that IP address and port number is reset, and begins to again count down. The duration of the pinhole timer could be less than a minute, or as long as several minutes. So long as the computing device sends regular communications to the server at the IP address, the server is able to send data packets back to the computing device. But if the computing device does not send any new communications to the server for a period of time that is longer than the duration of the pinhole timer, the data network interface device blocks the server from sending new communications to the computing device.
The use of a pinhole timer on a data network interface device has ramifications for voice over Internet protocol (VOIP) telephony systems. In most instances, a user's telephony device communicates with the servers of a VOIP telephony system via data packets which traverse a data network, such as the Internet. The user's telephony device typically gains access to the Internet through a wired or wireless data network interface device which operates a pinhole timer.
When a user wishes to place an outgoing call, the user's telephony device sends a communication to a server of the IP telephony system, which starts a pinhole timer running on the data network interface device that provides the user's telephony device with access to the Internet. Thereafter, and for the duration of the call, there are frequent communications passing back and forth between the user's telephony device and the IP telephony system's server. Each time a new communication is sent from the user's telephony device to the IP telephony system server, the pinhole timer is reset. As a result, the pinhole timer does not expire while the call is ongoing, and the IP telephony system server is able to send communications back to the user's telephony device.
Once a call ends, however, there may be no reason for the user's IP telephony device to send any further communications to the IP telephony system server. Once the pinhole timer relating to that IP telephony system server expires, the data network interface device prevents any communications from the IP telephony system server from reaching the user's IP telephony device. This is a problem if the IP telephony system receives an incoming call directed to the user's telephony device. Because the user's data network interface device prevents the IP telephony system server from communicating with the user's IP telephony device, the IP telephony system cannot setup the new call to the user's telephony device.
One way to overcome this problem is for the user's telephony device to be configured to send periodic “keep alive” messages to the IP telephony system server. So long as keep alive messages are sent at time intervals shorter than the duration of the pinhole timer, the pinhole will remain open, and the IP telephony system server will be able to send communications to the user's IP telephony device for purposes of setting up a new incoming call, or for any other purpose.
Many types of IP telephony devices are configured to send periodic keep alive messages to the IP telephony system server to keep a pinhole open. For example, any IP telephony device which has a reliable and constant source of power can be configured in this fashion. However, if the IP telephony device is powered by a battery, constantly sending keep alive messages to the IP telephony system server can cause undesirable battery drain.
For example, some battery powered smart phones and other portable computing devices can run a software application which provides IP telephony capabilities. Such smart phones and portable computing devices often obtain access to the Internet via a wireless data network interface device which operates a pinhole timer. To ensure that a server of the IP telephony system is able to send a communication to an IP telephony software application that is running on such a portable computing device, the IP telephony software application must periodically send keep alive messages to the IP telephony system server, to ensure the pinhole does not close. However, as noted above, this can cause undesirable battery drain.
One way of dealing with this problem, in the case of smart phones, is through the use of push notifications. In this scheme, an IP telephony software application on a user's smart phone is configured so that it does not send periodic keep alive messages to the IP telephony system server. This means that the pinhole of the data network interface device that is being used will close. However, when the IP telephony system server needs to communicate with the IP telephony software application, such as when there is an incoming call for the user, the IP telephony system causes a push notification to be sent to the user's smart phone. When a push notification is delivered to the user's smart phone, and the user accepts the push notification, the IP telephony software application is run, and/or caused to register with the IP telephony system. And when the IP telephony software application sends a communication to the IP telephony system, a new pinhole is opened, and the IP telephony system can begin sending communications to the IP telephony software application on the user's smart phone.
While push notifications are operative to re-establish communications between the IP telephony system and the IP telephony software application on a user's smart phone, the process of requesting that a push notification to be sent, waiting for the push notification to be delivered, waiting for the user to accept or acknowledge the push notification, and then waiting for the IP telephony software application to send a communication to the IP telephony system can take a considerable amount of time. If the IP telephony system is attempting to setup a new incoming call that is directed to the user, the delay can be too long. In many cases, before the process can be completed, and the incoming call can be connected to the user's smart phone, the calling party decides that the call setup attempt has failed, and the calling party hangs up.
Because use of push notifications is problematic, it is instead desirable to configure an IP telephony software application on a user's smart phone (or other battery operated mobile computing device) to keep the pinhole open via alternate means. However, this desire competes with a desire to ensure that the battery of the user's device is not drained unnecessarily. One way to deal with these competing interests is to configure the IP telephony software application so that the user's mobile computing device sends messages to the IP telephony system servers as infrequently as possible, while still ensuring that the pinhole of the data network interface device does not close. However, pre-configuring the IP telephony software application or the IP telephony system servers in this fashion is all but impossible, because the duration of the pinhole timers on different data network interface devices varies considerably. Further, a user can re-configure the pinhole timer of a data network interface device to have a different duration than was originally set by the manufacturer.
In view of all of the foregoing, there is a need for systems and methods that can proactively adapt to existing conditions such that keep alive messages are sent as infrequently as possible to keep the pinhole of a data network interface device open.